#include "Botao.h"


Botao::Botao(int id, Imagem* graficoActivo,Imagem* graficoInactivo, double x, double y){
	this->_id=id;
	this->graficoActivo=graficoActivo;
	this->graficoInactivo=graficoInactivo;
	this->enabled=true;

	/* vamos inicializar o botao */
	if(this->graficoActivo!=NULL){
		this->graficoActivo->setVisivel();
		this->graficoActivo->setPrioridade(PRIRORIDADE_BOTAO);
	}
	if(this->graficoInactivo!=NULL){
		this->graficoInactivo->setInvisivel();
		this->graficoActivo->setPrioridade(PRIRORIDADE_BOTAO);
	}
	this->position(x,y);

}

void Botao::position(double x, double y){
	this->_x=x;
	this->_y=y;
	if(this->graficoActivo!=NULL)
		this->graficoActivo->position(x,y);
	if(this->graficoInactivo!=NULL)
		this->graficoInactivo->position(x,y);
}


void Botao::disablePai(){
	this->enabled=false;
	if(this->graficoActivo!=NULL)
		this->graficoActivo->setInvisivel();
	if(this->graficoInactivo!=NULL)
		this->graficoInactivo->setVisivel();

	this->disable();
}
void Botao::enablePai(){
	this->enabled=true;

	if(this->graficoInactivo!=NULL)
		this->graficoInactivo->setInvisivel();
	if(this->graficoActivo!=NULL)
		this->graficoActivo->setVisivel();

	this->enable();
}


void Botao::enable(){}
void Botao::disable(){}

void Botao::update(unsigned long elapsedTime){

	/* vamos ver se o botao foi carregado  e se foi adicionamos o seu input ao repositorio*/
	if(this->enabled){
		Imagem* grafico=this->graficoActivo;
		double xmin=this->_x - (grafico->getLargura()/2);
		double xmax=this->_x + (grafico->getLargura()/2);
		double ymin=this->_y - (grafico->getAltura()/2);
		double ymax=this->_y + (grafico->getAltura()/2);

		double ratoX=Rato::instance()->getX();
		double ratoY=Rato::instance()->getY();
		if(ratoX<xmax && ratoY<ymax && 
			ratoX>xmin && ratoY>ymin  &&
			Rato::instance()->pressedLeft())
		{
			this->accaoPress(elapsedTime);
		}else{
			this->accaoNoPress(elapsedTime);
		}
	}
}

void Botao::accaoPress(unsigned long elapsedTime){}
void Botao::accaoNoPress(unsigned long elapsedTime){}


